<?php
/* 
 * Project: oCoder Framework
 * File: /controllers/user.php
 * Purpose: controller for the user of the app.
 * Author: Trung Hoang
 */

class UserController extends BaseController
{
    //add to the parent constructor
    public function __construct($action, $urlValues) {
        //Check login
        if(!Helper::isLogin()){
            //save current url: after login, auto redirect client to current url
            $_SESSION['lastUrl'] = Helper::currentPageURL();
            //redirect to login page
            header( 'Location: '.BASE_URL.'account/login' ) ;
        }
        parent::__construct($action, $urlValues);
        //create the model object
        require("models/user.php");
        $this->model = new UserModel();    
    }
    
    //default action
    protected function index()
    {
        if(Helper::Authenticate('XemNguoiDung'))
        {
            if(!empty($_GET['id'])) {
                 $para = $_GET['id'];
            }
            else $para=1;
             $this->view->output_admin($this->model->index($para));
        }
        else Helper::redirect();
    }
    //create action
    protected function create()
    {
        if(Helper::Authenticate('ThemNguoiDung')){
            //load data post from client
            if ( !empty($_POST)) {
                $data = array(
                    'TaiKhoan'=>$_POST['TaiKhoan'],
                    'MatKhau'=>$_POST['MatKhau'],
                    'TenNguoiDung'=>$_POST['TenNguoiDung'],
                    'Email'=>$_POST['Email'],
                    'GuiEmail'=>isset($_POST['GuiEmail'])?$_POST['GuiEmail']:0,
                    );
                $idlist=@$_POST['check_list'];
                $result = $this->model->create($data,'');
                if($result){
                    if(!empty($idlist)){
                        foreach ($_POST['check_list'] as $idGroup){
                            $data1 = array(
                                'IdNhom'=>$idGroup,
                                'IdNguoiDung'=>$result
                            );
                            $result1=$this->model->create($data1,'both');
                        }
                    }
                    $alert = array(
                        'class' => 'alert-success',
                        'message' => 'Thêm người dùng thành công' 
                        );
                    $_SESSION['message'] = $alert;
                    header( 'Location: '. BASE_URL . 'user/index' );
                }
            }
            //load form create
            $this->view->output_admin($this->model->create('')); 
        }
        else Helper::redirect();
    }

    //update action
    protected function adminupdate(){
        if(Helper::Authenticate('SuaNguoiDung')){
            //load data update post from client
            if(!empty($_POST)){
                //get data from POST
                $id = $this->urlValues['id'];
                $data = array(
                    'TenNguoiDung' => $_POST['TenNguoiDung'], 
                    'NgaySinh' => $_POST['NgaySinh'], 
                    'TieuSu' => $_POST['TieuSu'],
                    'SDT' => $_POST['SDT'], 
                    'Email' => $_POST['Email'], 
                    'DiaChi' => $_POST['DiaChi'],
                    'MatKhau' => $_POST['MatKhau']
                    );
                //update item -> return total rows affected
                $result = $this->model->edit($id, $data);
                //xóa nhóm của người dùng
                    $result1 = $this->model->delete('nd_nhomnguoidung', 'IdNguoiDung='.$id);
                    //thêm mới những chức năng cho nhóm
                    $idlist=@$_POST['check_list']; 
                    if(!empty($idlist)){
                        foreach ($_POST['check_list'] as $idGroup) {
                            $data1 = array(
                            'IdNguoiDung'=>$id,
                            'IdNhom'=>$idGroup
                            );
                            $result2=$this->model->create($data1,'both');
                        }
                    }
                    $alert = array(
                        'class' => 'alert-success',
                        'message' => 'Chỉnh sửa thành công' 
                        );
                    $_SESSION['message'] = $alert;
                    header( 'Location: '. BASE_URL . 'user/index' ) ;
            }
            //load form update
            $this->view->output_admin($this->model->edit($id=$this->urlValues['id'], $data=''));
        }
        else Helper::redirect();
    }

    protected function userupdate(){
            //load data update post from client
            if(!empty($_POST)){
                //get data from POST
                $id = $this->urlValues['id'];
                $data = array(
                    'TenNguoiDung' => $_POST['TenNguoiDung'], 
                    'NgaySinh' => $_POST['NgaySinh'], 
                    'TieuSu' => $_POST['TieuSu'],
                    'SDT' => $_POST['SDT'], 
                    'Email' => $_POST['Email'], 
                    'DiaChi' => $_POST['DiaChi'],
                    'MatKhau' => $_POST['MatKhau']
                    );
                //update item -> return total rows affected
                $result = $this->model->edit($id, $data);
                if($result){
                    $alert = array(
                        'class' => 'alert-success',
                        'message' => 'Cập nhật hồ sơ cá nhân thành công' 
                        );
                    $_SESSION['message'] = $alert;
                    header( 'Location: '. BASE_URL . 'user/index' ) ;
                }
            }
            //load form update
            $this->view->output_admin($this->model->edit($id=$this->urlValues['id'], $data=''));
    }

    //delete action
    protected function delete()
    {
        if(Helper::Authenticate('XoaNguoiDung')){
            // Kiểm tra nút Áp dụng xóa nhiều có được click hay chưa.
           $isDelete = array_key_exists("delete-multi", $_POST);
            //when client delete multi item
            if(!empty($_POST)) {
                if($isDelete==true)
                $result = $this->model->delete('nd_nguoidung', 'id IN('.implode(',',$_POST['check_list']).')');
            }
            else
                $result = $this->model->delete('nd_nguoidung', 'id='.$this->urlValues['id']);

            if($result){
                $alert = array(
                    'class' => 'alert-success',
                    'message' => 'Xóa người dùng thành công' 
                    );
                $_SESSION['message'] = $alert;
            }

            header( 'Location: '. BASE_URL . 'user/index' );
        }
        else Helper::redirect();
    }
    protected function updateIdNhom(){
        //load data update post from client
        if(!empty($_POST)){
            //get list id user
            $idArray = $_POST['check_list'];
            //get IdNhom
            $data = array(
                'IdNhom' => $_POST['IdNhom']
                );

         
            if((is_null($data['IdNhom']))||($data['IdNhom']=="")) {
                $this->alert('alert-warning','Chưa chọn nhóm để thay đổi');
            }

            if(count($idArray)>0) {
                foreach ($idArray as $id) {
                    $result = $this->model->edit($id, $data);
                }
            }
            else $this->alert('alert-warning','Chưa chọn người dùng để thay đổi');
            
            //update item -> return total rows affected
            if($result){
                $this->alert('alert-success','Thay đổi nhóm thành công');
            }
        }
    }
    protected function getFunction(){
         if(array_key_exists('delete-multi', $_POST))
         {
            if($_POST['action123']==""){
            $this->alert('alert-warning','Chưa chọn tác vụ để xóa');   
            return;
            }
            if(isset($_POST['check_list']))
             $this->delete();
             else {
                $this->alert('alert-warning','Chưa chọn người dùng để xóa');
                return;
            }
         }
        else {
            if(array_key_exists('btnsearch', $_POST)) $this->search();
        }
    }
    protected function search(){
        if(!empty($_GET['id'])) {
                 $para = $_GET['id'];
            }
            else $para=1;
            $this->view->output_admin($this->model->search($para,$_POST['txtsearch']));
    }
    function alert($class,$message){
        $alert = array(
                    'class' => $class,
                    'message' => $message 
                    );
                $_SESSION['message'] = $alert;
                header( 'Location: '. BASE_URL . 'user/index');
    }
}

?>